【嵌入式开发】利用ESP8266获取附近WIFI信息

您所在的位置:网站首页 wifi探针使用技巧 位置 【嵌入式开发】利用ESP8266获取附近WIFI信息

【嵌入式开发】利用ESP8266获取附近WIFI信息

2024-07-10 19:36| 来源: 网络整理| 查看: 265

一、准备 一块块装好AT固件的8266芯片 一台装了linux的嵌入式开发板 将芯片与开发板进行连接 二、AT+CWLAP——扫描当前可用的 AP

通过发送AT+CWLAP,可捕获周围的AP信息,下面是查看官方AT文档后得到的信息:

在超级终端中尝试,其中新刷入的固件要启动WIFI模式,启动指令:AT+CWMODE_DEF=3

三、在主程序中实现UART通信

由于我用的是改造过的固件,波特率和官方的不一样,所以在使用的时候请改一下波特率,在代码的宏定义部分。

int main(int argc, char *argv[]) { int fd, res; struct termios oldtio, newtio; char ch; char buf[256] = { 0}; printf("Start...\n"); //-----------打开uart设备文件------------------ fd = open(UART_DEVICE, O_RDWR|O_NOCTTY);//没有设置O_NONBLOCK,所以这里read和write是阻塞操作 if (fd < 0) { perror(UART_DEVICE); exit(1); } else printf("Open %s successfully\n", UART_DEVICE); //-----------设置操作参数----------------------- tcgetattr(fd, &oldtio);//获取当前操作模式参数 memset(&newtio, 0, sizeof(newtio)); //波特率 数据位=8 使能数据接收 newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD; newtio.c_iflag = IGNPAR; //newtio.c_oflag = OPOST | OLCUC; // /* 设定为正规模式 */ //newtio.c_lflag = ICANON; tcflush(fd, TCIFLUSH);//清空输入缓冲区和输出缓冲区 tcsetattr(fd, TCSANOW, &newtio);//设置新的操作参数 //------------向urat发送数据------------------- char writeBuf[32] = "AT+CWLAP\r\n"; res = write(fd, writeBuf, 32); printf("Writing: %s\n", writeBuf); //-------------从uart接收数据------------------- string allReturnBuf = ""; string s_buf; printf("Reading...\n"); while(1) { res = read(fd, buf, 64);//程序将在这里挂起,直到从uart接收到数据(阻塞操作) if (res == 0) continue; buf[res] = '\0'; // printf("res = %d, buf = %s\n", res, buf);//将uart接收到的字符打印出来 // 由于每次最多只能拿32位数据,所以要一直获取直到指令返回信息全部取回 s_buf = buf; allReturnBuf += s_buf; // 判断AT返回命令是否到头 if (isEnd(allReturnBuf)) { // for (int i = 0; i < allReturnBuf.size(); i++) { // if ('\n' == allReturnBuf[i]) cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3